Re: [SQL] err: select f() from i where (f()) in (select f() from x group by j); - Mailing list pgsql-sql

From Herouth Maoz
Subject Re: [SQL] err: select f() from i where (f()) in (select f() from x group by j);
Date
Msg-id l03130308b3dc71c61b61@[147.233.159.109]
Whole thread Raw
In response to err: select f() from i where (f()) in (select f() from x group by j);  (Chad Miller <cmiller+ps@surfsouth.com>)
List pgsql-sql
At 03:13 +0300 on 14/08/1999, Chad Miller wrote:


> If I create a view, with
>
> > create view foo as select timestamp, sum(num) from timelines where
>(name='foo' or name='bar' or name='baz') group by timestamp;
>
> I get:
> Table    = foo
> +-----------------------------+----------------------------------+-------+
> |              Field          |              Type                | Length|
> +-----------------------------+----------------------------------+-------+
> | timestamp                   | datetime                         |     8 |
> | sum                         | int2                             |     2 |
> +-----------------------------+----------------------------------+-------+
>
> (Note the fields' naming)  Still -- I'd like a more elegant way to do this,
> than creating a view.
>
> I came up with:
>
> > select timestamp, max(sum) from timelines where (timestamp, sum) in
>(select timestamp, sum(num) from timelines where (name='foo' or name='bar'
>or name='baz') group by timestamp);
>
> ...which returns
>
> < ERROR:  attribute 'sum' not found

The way to get rid of names that would make your life hard is to put field
aliases in the CREATE VIEW:

create view foo as select timestamp as ts_col, sum(num) as sum_col
from timelines, where ....;

Anyway, it's not the problem here. The problem is that you selected from
timelines instead of from foo.

As for a more elegant way of doing the same task, I'm not entirely sure,
because I don't have the latest PostgreSQL here, but here is a general idea:

SELECT timestamp, sum( num ) as the_sum
FROM timelines
WHERE (name='foo' or name='bar' or name='baz')
GROUP BY timestamp
ORDER BY the_sum DESC
LIMIT 1;

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma




pgsql-sql by date:

Previous
From: Herouth Maoz
Date:
Subject: Re: [SQL] Multiple values for a field
Next
From: "Len Morgan"
Date:
Subject: Agregate Problem?